package com.heima.数字转换为阿拉伯数字;

import java.util.Scanner;
import java.util.StringJoiner;

public class Test1 {
    public static void main(String[] args) {
       /*
       * 键盘录入一个字符串，长度小于9，只能是数字，
       * 罗马数字没有0，如果键盘录入的数字包含0，可以变成""(长度为0的字符串）*/
        Scanner sc = new Scanner(System.in);
        String s;
        while(true){
            System.out.println("请输入一个字符串");
             s = sc.nextLine();
            boolean flag=checkStr(s);
            if(flag){
                break;
            }else{
                System.out.println("当前字符不符合规则，请重新输入：");

            }
        }
//遍历输入的字符串，得到每一位字符，使用查表法得到对应的罗马数字，拼接字符串，输出结果
       // StringBuilder sb = new StringBuilder();
        StringJoiner sj = new StringJoiner(",");
        for(int i=0;i<s.length();i++){
            char c = s.charAt(i);//此处获得的是字符不是数字
            int number = c-48;//字符数字和数字的转换，0字符为48
            String str = getValue(number);
            sj.add(str);
        }
        System.out.println(sj);


    }
    //查表法,参数传入的索引，返回值是对应的罗马数字
    public static String getValue(int number){
        String[] arr={"","I","II","III","IV","V","VI","VII","VIII","IX"};
        return arr[number];
    }
    //定义一个方法,确认输入的字符串是否合法
    public static boolean checkStr(String str){
        //判断长度
        if(str.length()>9||str.length()==0){
            return false;
        }
        //只能是数字
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);//获取索引
            if(c<'0' || c>'9'){
                return false;
            }
        }
        return true;
    }
}
